Over last years, the average capabilities of communication devices, such as mobile devices, have dramatically increased. As a result, nowadays, most of the communication devices available in the market are capable of providing a large set of features, i.e. functionalities, in addition to traditional core telephony features. For instance, devices are now capable of recording and playing a plurality of media formats, taking pictures and providing navigation services.
However, the introduction of all these features on mobile devices or other types of communication devices has led to a considerable increase in their power consumption, which may result in shorter battery autonomy. In fact, firstly, such features require communication devices' software to execute more complex and computation-hungry tasks, hence generating more computation load for CPU and central memory. Secondly, they generally require a higher amount of network communication to exchange data with remote application servers, thus resulting in a higher utilisation of network interfaces. Thirdly, the use of these features involves the utilisation of a larger number of power-consuming hardware components, such as GPS receivers, Bluetooth and Wi-Fi transceivers, high-resolution screens, cameras, etc.
Hardware virtualization has been proposed as a solution for rationalising power consumption on communication devices. In this context, hardware virtualization is intended as the organization of a plurality of features in a plurality of virtual machines which run on a virtualized representation of physical hardware resources (components) provided by a hypervisor (sometimes referred to as Virtual Machine Monitor (VMM)).
To do so, as shown in FIG. 2, a virtualization layer 4, installed on top of the communication device hardware 3, abstracts this hardware in order to present it to several virtual machines 5 installed on top of it. This is in contrast with the classical communication device 1 of FIG. 1, in which the hardware components 2 are all presented as such to the device, with no virtualization operation.
In this context, with the term “virtual machine” it is intended a system virtual machine, which, as known in the art, refers to any self sufficient software stack, which may comprise an operating system and a plurality of processes, which can be run on top of a virtualization layer. For instance, machines running operating systems like Android™ or Symbian Platform™ would be defined as virtual machines if executed on top of a virtualization layer.
However, as those skilled in the art would recognize, a virtual machine would generally consume more energy to execute a specific task in comparison to a physical machine. In fact, in order to successfully run virtual machines on physical hardware, it is required to operate a hypervisor which adds a computational overhead to all tasks performed by virtual machines running on top of it. Nonetheless, recent advancements in virtualization technologies have strongly reduced the average overhead of hypervisors to a negligible level in most cases.
In addition, virtualization can provide energy efficiency by enabling to freeze the status of unutilized or scarcely utilized virtual machines when, for example, residual battery autonomy downward crosses a predefined threshold. This feature also allows to securely shut down virtual machines and to restore the exact status in which they were at the moment of being shut down, once adequate energy autonomy is available.
Another alternative known technique for reducing power consumption consists in shutting down non-critical hardware components in case of inadequate energy autonomy. Examples of the application of this technique include shutting down non-critical network interfaces such as Wi-Fi and Bluetooth or reducing the brightness of screen.
The techniques described above present at least the following major shortcoming.
Disabling hardware components or virtual machines does not systematically enable to identify what exact features will not be available any longer after such operations, except in trivial cases. In fact, for example, in environments comprising a large plurality of virtual machines whereby the availability of any singular feature may rely upon a plurality of intercommunicating virtual machines and hardware components, any operation on hardware components or virtual machines may leave the system in an inconsistent state.